import {
  http
} from './http.js';

// 报名相关接口
export const signupApi = {
  /**
   * 链接报名接口
   * @param {number} requireId - 需求ID
   * @param {string} openId - 用户唯一标识
   * @returns {Promise}
   */
  linkSignUp: (params) =>
    http.get('/link/signup/' + params),

  /**
   * 提交报名信息
   * @param {Object} busSignup - 报名信息对象
   * @returns {Promise}
   */
  signUp: (busSignup) => http.post('/signup', busSignup),

  /**
   * 上传文件（支持选择 PDF 并上传）
   * @param {Object} [options] - 可选参数
   * @param {number} [options.count=6] - 最多选择的文件数量
   * @param {string[]} [options.extensions=['.pdf']] - 允许的文件扩展名
   * @param {string} [options.url='https://your-api.com/upload'] - 上传地址
   * @param {Object} [options.formData] - 附加参数
   * @returns {Promise}
   */
  uploadFile: (options = {}) => {
    return new Promise((resolve, reject) => {
      const {
        count,
        extensions,
        url,
        formData,
        header
      } = options;

      uni.chooseFile({
        count,
        extension: extensions,
        success: (chooseRes) => {
          if (chooseRes.tempFilePaths.length === 0) {
            uni.showToast({
              title: '未选择文件',
              icon: 'none'
            });
            return reject(new Error('未选择文件'));
          }

          const filePath = chooseRes.tempFilePaths[0];

          uni.uploadFile({
            url,
            filePath,
            name: 'file',
            formData,
            header,
            success: (uploadRes) => {
              if (uploadRes.statusCode === 200) {
                try {
                  const data = JSON.parse(uploadRes.data);
                  resolve(data);
                } catch (e) {
                  resolve(uploadRes.data);
                }
              } else {
                reject(new Error('上传失败，状态码：' + uploadRes.statusCode));
              }
            },
            fail: (err) => {
              reject(err);
            }
          });
        },
        fail: (err) => {
          reject(err);
        }
      });
    });
  }
};